ডেডলক (Deadlock) হলো একটি অবস্থা যেখানে দুটি বা ততোধিক প্রসেস একে অপরের জন্য অপেক্ষা করতে থাকে এবং কেউই এগোতে পারে না। অর্থাৎ, প্রত্যেকটি প্রসেস এমন রিসোর্সের জন্য অপেক্ষা করে, যা অন্য কোনো প্রসেস দখল করে রেখেছে। এই অবস্থায় কোনো প্রসেসই তাদের কাজ শেষ করতে পারে না, এবং সিস্টেমের কার্যক্ষমতা সম্পূর্ণভাবে স্থবির হয়ে পড়ে।
ডেডলক ঘটার চারটি শর্ত (Coffman’s Conditions):
ডেডলক ঘটার জন্য নিচের চারটি শর্ত একসঙ্গে পূরণ হওয়া প্রয়োজন। এই শর্তগুলোকে Coffman’s conditions বলা হয়:
Mutual Exclusion (পারস্পরিক বর্জন):
- রিসোর্সকে একই সময়ে কেবলমাত্র একটি প্রসেস ব্যবহার করতে পারবে। অন্য কোনো প্রসেস যদি সেই রিসোর্স ব্যবহার করতে চায়, তবে তাকে অপেক্ষা করতে হবে। এই শর্ত পূরণ হলে রিসোর্সগুলি একাধিক প্রসেসের মধ্যে ভাগ করা যায় না।
Hold and Wait (ধারণ এবং অপেক্ষা):
- একটি প্রসেস এক বা একাধিক রিসোর্স ধারণ করে এবং অন্য রিসোর্সের জন্য অপেক্ষা করে। এই শর্তে, প্রসেস তার কাছে থাকা রিসোর্সগুলো ছেড়ে না দিয়ে আরও রিসোর্সের জন্য অপেক্ষা করতে থাকে।
No Preemption (পূর্বাভাসহীনতা):
- কোনো রিসোর্স জোরপূর্বক কোনো প্রসেস থেকে ছিনিয়ে নেওয়া যাবে না; এটি কেবল রিসোর্স ধারণকারী প্রসেসের ইচ্ছায় ছাড়া যাবে। যদি কোনো প্রসেস কিছু রিসোর্স ধরে রাখে এবং অন্য কোনো রিসোর্সের জন্য অপেক্ষা করে, তাহলে সেই রিসোর্সগুলিকে ছিনিয়ে নেওয়া যাবে না।
Circular Wait (বৃত্তাকার অপেক্ষা):
- একাধিক প্রসেস একটি চক্রের মতো একে অপরের জন্য অপেক্ষা করে। অর্থাৎ, P1 প্রসেস P2-এর জন্য অপেক্ষা করে, P2 প্রসেস P3-এর জন্য, এবং শেষমেশ Pn প্রসেস P1-এর জন্য অপেক্ষা করে। এর ফলে একটি বৃত্তাকার অপেক্ষা চক্র তৈরি হয়, যা ডেডলকের সৃষ্টি করে।
উপসংহার:
এই চারটি শর্ত একসাথে পূরণ হলে সিস্টেমে ডেডলক ঘটে। ডেডলক প্রতিরোধ করার জন্য এই শর্তগুলোর যেকোনো একটি শর্ত ভঙ্গ করা প্রয়োজন। ডেডলক প্রতিরোধ, এড়ানো, এবং শনাক্তকরণের জন্য বিভিন্ন কৌশল রয়েছে, যা সিস্টেমের কার্যকারিতা নিশ্চিত করতে সাহায্য করে।
Read more